<?php
	/**
     * Oggetto per inviare gli email
     * @param Array/String $indirizzi
     * @param String $mittente
     * @param String $oggetto
     * @param String $messagio
     */
class email
{
	public $mess 		= '';
	public $oggetto 	= '';
	public $headres 	= '';
	public $indirizzi	= array();
	public $da			= '';

	public function __construct($indirizzi, $mittente, $oggetto, $messagio)
	{
		$this->A($indirizzi);
		$this->DA($mittente);
		$this->Oggetto($oggetto);
		$this->Messaggio($messagio);
		$this->Invia();
	}
	
	/**
     * Setta l'oggetto dell'e-mail, togliendo gli acapo
     * @param String $subject
     */
	public function Oggetto($subject = '')
	{
		if ($subject == '')
		{
			$subject = "Nessun oggetto specificato";
		}
		$this->oggetto = trim(preg_replace('#[\n\r]+#s', '', "CommuniTi.ch - " . $subject));
	}
	
	/**
     * Sostituisce gli acapo con il tag acapo
     * @param String $messaggio
     */
	public function Messaggio($messaggio = '')
	{
		$messaggio .= "<br><br><a href=\"http://www.communiti.ch\" target=\"_blank\">CommuniTi.ch</a>";
		$this->mess = str_replace("'", "&#39;", $messaggio);
		$this->mess = str_replace("\"", "&#34;", $messaggio);
		$this->mess = preg_replace('#\{([a-z0-9\-_]*?)\}#is', "' . $\\1 . '", $this->mess);
	}
	
	/**
     * Specifica i destinatari
     * @param Array/String $indirizzi
     */
	public function A($indirizzi)
	{
		$rx = "/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9_\.\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/";
		if ( !is_string($indirizzi) )
		{
			$i = 0;
			foreach ($indirizzi AS $chiave => $valore)
			{
				$indirizzo = trim($valore);
				if ( preg_match($rx, $indirizzo) )
				{
					$this->indirizzi[$i] = $valore;
					$i++;
				}
			}
		}
		else
		{
			$indirizzo = trim($indirizzi);
			if ( preg_match($rx, $indirizzo) )
			{
				$this->indirizzi[0] = $indirizzo;
			}
		}
	}
	
	/**
     * Specifica il mittente
     * @param String $da
     */
	public function DA($da)
	{
		$this->da = trim($da);
	}
	

    /**
     *  Invia il messaggio
     */
	public function Invia()
	{		
		$this->headers = (($this->da != '') ? "Reply-to: $this->da\n" : '') . (($this->da != '') ? "From: $this->da\n" : "From: staff@communiti.ch\n") . "Return-Path: staff@communiti.ch\nMIME-Version: 1.0\nContent-type: text/html; charset=iso-8859-1\nContent-transfer-encoding: 8bit\nDate: " . date('r', time()) . "\nX-Priority: 3\nX-MSMail-Priority: Normal\nX-Mailer: PHP\nX-MimeOLE: CommuniTi.ch\n" . $this->headers;
		
		$to = '';
		if (count($this->indirizzi) > 1 )
		{
			$to = (count($this->indirizzi)) ? implode(', ', $this->indirizzi) : '';
		}
		else
		{
			$to = $this->indirizzi[0];
		}

		mail($to, $this->oggetto, preg_replace("#(?<!\r)\n#s", "\n", $this->mess), $this->headers); 
	}
}
?>